﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GUI
{
    public partial class FrmFindArtikel : Form
    {

        ListViewItem artikel;
        private Controller.vandspareSystem VandspareSystem;


        public FrmFindArtikel(Controller.vandspareSystem VandspareSystem)
        {
            InitializeComponent();
            this.VandspareSystem = VandspareSystem;
            fyldListe();
            picBeskrivelse.Visible = picLtrprmin.Visible = picPris.Visible = false;

            btnGem.Enabled = false;
        }

        private void fyldListe()
        {
            lstArtikler.Items.Clear();
            btnSlet.Enabled = false;

            for (int i = 0; i < VandspareSystem.artikelCol.LISTE.Count(); i++)
            {


                artikel = new ListViewItem(VandspareSystem.artikelCol.LISTE[i].Varenr.ToString());
                artikel.SubItems.Add(VandspareSystem.artikelCol.LISTE[i].Beskrivelse);

                lstArtikler.Items.Add(artikel);

            }

            lblCount.Text = VandspareSystem.artikelCol.LISTE.Count + " Artikler i alt.";
        }


        private void btnLuk_Click(object sender, EventArgs e)
        {
            //tjek om der er lavet ændringer som ikke er gemt
            this.Close();
        }


        private void lstArtikler_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnGem.Enabled = true;
            btnSlet.Enabled = true;
            

            int index = 0;
            if (this.lstArtikler.SelectedItems.Count > 0)
                index = this.lstArtikler.SelectedIndices[0];

            txtVarenummer.Text = VandspareSystem.artikelCol.LISTE[index].Varenr.ToString();
            txtBeskrivelse.Text = VandspareSystem.artikelCol.LISTE[index].Beskrivelse;
            txtLtrPrMin.Text = VandspareSystem.artikelCol.LISTE[index].Literprmin.ToString();
            txtPris.Text = VandspareSystem.artikelCol.LISTE[index].Pris.ToString();

        }


        private void btnSlet_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Er du sikker på at du vil slette " + txtBeskrivelse.Text + "?" + "\r\n" + "Sletningen kan IKKE fortrydes!", "Du er igang med at slette varenummer " + txtVarenummer.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (res == DialogResult.Yes)
            {
                VandspareSystem.SletArtikel(Convert.ToInt32(txtVarenummer.Text));
                lblStatus.Text = "Slettet varenummer: " + txtVarenummer.Text;
                rydTxtBoxe();
                fyldListe();
                btnGem.Enabled = false;
            }
        }


        private void rydTxtBoxe()
        {
            txtVarenummer.Text = txtPris.Text = txtLtrPrMin.Text = txtBeskrivelse.Text = "";
        }


        private void btnGem_Click(object sender, EventArgs e)
        {
            if (tjekInput())
            {
                VandspareSystem.OpdaterArtikel(Convert.ToInt32(txtVarenummer.Text), Convert.ToDouble(txtPris.Text), Convert.ToDouble(txtLtrPrMin.Text), txtBeskrivelse.Text);
                
                lblStatus.Text = "Ændringer gemt for varenummer: " + txtVarenummer.Text;
                fyldListe();
            }
        }

        private void tooltip(PictureBox pic, string besked)
        {
            ToolTip toolTip = new ToolTip();
            toolTip.IsBalloon = true;
            toolTip.SetToolTip(pic, besked);
        }


        private bool tjekInput()
        {
            int point = 0;



            if (InputValidator.DOUBLE(txtLtrPrMin.Text))
            {
                point += 1;
                picLtrprmin.Visible = false;
            }
            else
            {
                picLtrprmin.Visible = true;
                tooltip(picLtrprmin, "Indtast venligst et decimal tal");
            }

            if (InputValidator.DOUBLE(txtPris.Text))
            {
                point += 1;
                picPris.Visible = false;
            }
            else
            {
                picPris.Visible = true;
                tooltip(picPris, "Indtast venligst en gyldig pris");
            }
            //beskrivelse må gerne være tom

            if (point == 2)
                return true;
            else return false;
        }
    }
}
